package com.tedu.api.list;

import org.junit.Test;

import java.util.Collection;

//测试：    ①创建父类：Fruit--属性：名字
        //         ②两个子类：Apple,Orange--构造器：传水果名
        //         ③创建TestJob类  泛型 ？  extends  父类
        //         约束---静态的方法 printFruit()
        //         约束只能是继承父类的子类才可以使用
        //         ④单元测试：testE()测试--约束是否限制成功
        // 实际开发应用中，高级程序员制定！

    public class Fruit {
        private String name;         //私有属性 name

        public String getName(){    //获取名字
            return name;
        }

        public Fruit(String name) { //有参数构造器
            this.name = name;
        }
    }
    //创建两个子类：Apple和Orange继承Fruit
class Apple extends Fruit{

        public Apple() {
            super("苹果");
        }
    }

class Orange extends Fruit{
    public Orange() {
           super("橘子");
    }
}
//创建TestJob类---静态方法printFruit:添加约束：传入类型一定是父类的子类
class TestJob{   // ? 【任意类型】 extends Fruit
                //传入类型必须继承与Fruit父类
        public static void printFruit(Collection<? extends Fruit>fruits){
            //增强for循环：父类Fruit 名称
            for(Fruit fruit:fruits){//获取继承[Apple Orange]与父类的功能
                //打印对应对象名称
                System.out.println(fruit.getName());

            }

        }
}
//测试：上界限定：一定继承Fruit【pear不继承Fruit】
class pear{

}
